package spring_01_ioc.iocTest;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import spring_01_ioc.ioc.HelloIoc;

public class HelloIocTest1 {
	/**
     *  Spring 容器利用构造函数创建对象
     */
	@Test
	public void testCreateObjectByConstrutor(){
		//1、启动 spring 容器
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		//2、从 spring 容器中取出数据
		HelloIoc IOC = (HelloIoc) context.getBean("helloIoc");
		//3、通过对象调用方法
		IOC.sayHello();
		
		//利用配置文件 alias 别名属性创建对象
		HelloIoc IOC2 = (HelloIoc) context.getBean("helloIoc2");
		IOC2.sayHello();
		
		//这里结束之后在HelloIoc类  加了一个构造方法：public HelloIoc() {System.out.println("Hello me");}
		//打印结果为Hello me ； Hello IOC ；  Hello IOC
		//Hello me只打印一次，可见Hello 被spring根据bean创建之后，只在第一次调用时创建自己，之后便一直停留在容器中
		//而不是没调用一次就创建一次。
	}
}
